<?php
/**
 * 移动端项目 全局公共函数
 */
/******************* 企业号公共函数区域 ************************/
/**
* https_curl请求
* @param $url 远程请求地址
* @param $data post传输数据
* @return $result 返回接收数据
*/
function https_curl($url,$data = null){
   $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL,$url);
   //针对ssl https协议
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   //检测get post方式提交数据
   if(!empty($data)){
       //设置post方式提交
       curl_setopt($curl, CURLOPT_POST, 1);
       //设置post数据
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
   }
   //执行命令
   $result = curl_exec($curl);
   //关闭URL请求
   curl_close($curl);
   //返回获得数据
   return $result;
}

/**
 * 获取企业号token 
 * @param string $corpid 企业号corpid
 * @param string $secret 企业号secret
 * @return fix 获取成功返回token 获取失败返回false token缓存7000秒
 */
function getToken($corpid,$secret){
    //检测是否有token缓存
    if($token = S($corpid)){
        return $token;
    }else{
        $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corpid}&corpsecret=".$secret;
        $res = json_decode(https_curl($url),true);
        if($token = $res['access_token']){
            S($corpid,$token,7000);
            return $token;
        }else{
            return false;
        }
    }
}

/**
 * 动态生成企业号 网页授权url
 * @param string $coprid 企业号corpid
 * @param string $module 请求模块名称
 * @param string $controller 请求控制器名称
 * @param string $action 请求方法名
 * @param string $state 重定向后state参数
 * @return string 返回生成url
 */
function createAuthUrl($corpid,$module,$controller='Index',$action='index',$state=''){
    $url = C('RPOJECT_URL');
    $url ="{$url}index.php?m={$module}&c={$controller}&a={$action}";
    $REDIRECT_URI = urlencode($url);
    $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$corpid}&redirect_uri={$REDIRECT_URI}&response_type=code&scope=snsapi_base&state={$state}#wechat_redirect";
    return $url;
}


/********************** 自定义函数区域 ****************************/

/**
 * 初始化连接redis服务器
 */
function connectRedis(){
    $redis = new \Redis();
    if(!$redis->connect(C('redis_host'),C('redis_port'))){
        exit('reids数据库连接失败!');
    }
    if(!$redis->auth(C('redis_passwd'))){
        exit('redis数据库认证登陆失败!');
    }
    $GLOBALS['redis'] = $redis;
    return $redis;
}

/**
 * 打印调试变量函数
 *  @param mixed $data 被打印变量
 */
function p($data){
    var_dump($data);
}